package com.welink.cmp.dto.metadata.host;

import com.welink.cmp.dto.CommonCommand;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 创建主机资产指令
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CreateHostAddCmd extends CommonCommand {

    /**
     * 资产ID
     */
    private String assetsId;

    /**
     * 序列号 - UK
     */
    private String sn;

    /**
     * 主机名
     */
    private String name;

    /**
     * 厂商
     */
    private String vendor;

    /**
     * 品牌
     */
    private String brand;

    /**
     * 型号
     */
    private String model;

    /**
     * 型号别名 - 可读性更强的型号描述
     */
    private String modelAlias;

    /**
     * 尺寸（U） - 默认：2
     */
    private Integer unitSize;

    /**
     * 机房CODE - 机房的唯一标识
     */
    private Integer dataCenterCode;

    /**
     * 过保时间 - 默认为空，表示永久有效；一旦释放，释放时间即为过保时间
     */
    private LocalDateTime expirationTime;

    /**
     * 上架时间 - 购买时间为上架时间
     */
    private LocalDateTime launchedTime;

    /**
     * 是否虚拟设备 - 0，物理设备；1，虚拟设备
     */
    private Boolean isVirtualDevice;

    /**
     * 宿主机ID - 仅限虚拟化场景下使用
     */
    private Long hypervisorHost;

    /**
     * CPU核数 - 逻辑核数量
     */
    private Integer cpuCores;

    /**
     * 内存大小 - 单位：MB
     */
    private Integer memoryCapacity;

    /**
     * 磁盘容量 - 单位：GB
     */
    private Integer diskCapacity;

    /**
     * GPU型号简称 - 如：3060，A100
     */
    private String gpuModel;

    /**
     * 实例ID - 仅限虚拟化或者公有云场景
     */
    private String refId;

    /**
     * 实例名称 - 仅限虚拟化或者公有云场景
     */
    private String refName;

    /**
     * 账号ID - 仅限虚拟化或者公有云场景
     */
    private Long accountId;

    /**
     * 付费方式 - 0，按量付费；1，包年包月
     */
    private Integer chargeType;
    /**
     * 购买时间
     */
    private LocalDateTime purchaseTime;
    /**
     * 用途
     * 1、标签字段
     * 2、支持多标签
     * X86、ARM、Edge、Storage、NAS
     */
    private String label;
    /**
     * 租约到期时间
     */
    private LocalDateTime leaseExpiredTime;
    /**
     * 备注
     */
    private String remark;
}